package com.javaspeak.designpatterns.go4.creational.abstractfactory;

/**
 * SquareFactory and TriangleFactory implement ShapeFactory.  ShapeFactory is
 * the cornerstone of the Gang of Four Structural AbstractFactory pattern.
 * <p>
 * Depending on whether SquareFactory or TriangleFactory is plugged in, a
 * Square or Triangle will be used when the drawShape() method is called on the
 * Shape.
 *
 * @author John Dickerson
 */
public interface ShapeFactory {

    /**
     * Returns a shapw the the implentation of the ShapeFactory deals with.
     * <p>
     * For example a SquareFactory that implements ShapeFactory will return a
     * Square
     *
     * @return a Shape
     */
    Shape getShape();
}
